]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
authPrompt: Bump the user verifier timeout when wiggling the message
authorMarco Trevisan (Treviño) <mail@3v1n0.net>
Mon, 8 Feb 2021 18:34:09 +0000 (19:34 +0100)
committerRay Strode <halfline@gmail.com>
Mon, 15 Feb 2021 16:58:50 +0000 (16:58 +0000)
Wiggle may make the error message to be visible for less time so provide
the auth prompt an API to increase the timeout to be used for showing a
message in some cases.

This could be reworked when we'll have a proper asyn wiggle function so
that we could just make the user verifier to "freeze", then await for
the wiggle transition to complete and eventually release the verifier.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1652>

js/gdm/authPrompt.js
js/gdm/util.js

index 7b5d03ef4254a7b25cb35113507836264c7c5da2..d2c9a165949a1b09df67754b5476c61692f5e2d8 100644 (file)
@@ -432,8 +432,16 @@ var AuthPrompt = GObject.registerClass({
         }
 
         if (type === GdmUtil.MessageType.ERROR &&
-            this._userVerifier.serviceIsFingerprint(serviceName))
-            Util.wiggle(this._message);
+            this._userVerifier.serviceIsFingerprint(serviceName)) {
+            // TODO: Use Await for wiggle to be over before unfreezing the user verifier queue
+            const wiggleParameters = {
+                duration: 65,
+                wiggleCount: 3,
+            };
+            this._userVerifier.increaseCurrentMessageTimeout(
+                wiggleParameters.duration * (wiggleParameters.wiggleCount + 2));
+            Util.wiggle(this._message, wiggleParameters);
+        }
     }
 
     updateSensitivity(sensitive) {
index f6a980a2ae16309456437bf5831b09f2df8d93f3..1666fd842da621d920c9dbbca1e34b7ee399ce01 100644 (file)
@@ -285,6 +285,11 @@ var ShellUserVerifier = class {
         this.emit('no-more-messages');
     }
 
+    increaseCurrentMessageTimeout(interval) {
+        if (!this._messageQueueTimeoutId && interval > 0)
+            this._currentMessageExtraInterval = interval;
+    }
+
     _queueMessageTimeout() {
         if (this._messageQueue.length == 0) {
             this.finishMessageQueue();
@@ -296,10 +301,11 @@ var ShellUserVerifier = class {
 
         let message = this._messageQueue.shift();
 
+        delete this._currentMessageExtraInterval;
         this.emit('show-message', message.serviceName, message.text, message.type);
 
         this._messageQueueTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
-                                                       message.interval,
+            message.interval + (this._currentMessageExtraInterval | 0),
                                                        () => {
                                                            this._messageQueueTimeoutId = 0;
                                                            this._queueMessageTimeout();